/*************************************************************************
    > File Name: 1pipe-2.c
    > Author: Ykk
    > Mail: 3393579535@qq.com 
    > Created Time: 2023年04月15日 星期六 10时48分38秒
 ************************************************************************/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>

#define SIZE 100

//创建无名管道
int main()
{
	int fd[2];
	int ret = -1;
	pid_t pid = -1;
	char buf[SIZE];
	
	//创建一个管道
	ret = pipe(fd);
	if(-1 == ret)
	{
		perror("pipe");
		return 1;
	}
	
	pid = fork();
	if(0 > pid)
	{
		perror("fork");
		return 1;
	}
	else if(0 == pid)//子进程 读管道
	{
		//关闭写端
		close(fd[1]);
		
		memset(buf,0,SIZE);
		ret = read(fd[0],buf,SIZE);
		if(ret < 0)
		{
			perror("read");
			exit(-1);
		}
		printf("child process buf:%s \n",buf);

		//关闭读端
		close(fd[0]);
		//退出进程
		exit(0);
	}
	else//父进程 写管道
	{
		//关闭读端
		close(fd[0]);


		scanf("%s",buf);

		ret = write(fd[1],buf,strlen(buf));

		if(ret < 0)
		{
			perror("write");
			return 1; 
		}
		printf("parent process write len:%d\n",ret);


		//关闭写端
		close(fd[1]);
	}
	return 0;
}

